public class test_11_03 {

    //递归求 N 的阶乘
    public static int fac(int n) {
        if (n == 1) {
            return 1;
        }
        return n * fac(n - 1);
    }

    // 递归求和
    public static int sum(int n) {
        if (n == 1) {
            return 1;
        }
        return n + sum(n-1);
    }

    // 递归顺序打印一个数字的每一位
    // (例如 1234 打印出 1 2 3 4) （递归）  18
    public static void fun(int n){
        if (n>9){
            fun(n/10);
        }
        System.out.print(n%10 + " ");
    }

    public static void main(String[] args) {
        int a = 1234;
        fun(a);
    }

    // 写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int sum1(int n){
        if(n<=9){
            return n;
        }
        return n%10 + sum1(n/10);
    }

    // 递归求斐波那契数列的第 N 项
    public static int fib(int n){
        if(n<=2){
            return 1;
        }
        return fib(n-1)+fib(n-2);
    }

    //实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值.
    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    public static void main5(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
        printArray(arr);
    }




    // 创建的数组，并且赋初始值
    // 创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
    public static void main4(String[] args) {
        int[] arr = new int[100];
        for (int i = 0; i < 100; i++) {
            arr[i] = i+1;
        }
        for (int i = 0; i < 100; i++) {
            System.out.println(arr[i]);
        }
    }
    public static void main3(String[] args) {
        int n = 5;  // 1 1 2 3 5
        int ret = fib(n);
        System.out.println("斐波那契数列第"+n+"项为："+ ret);
    }

    public static void main2(String[] args) {
        int a = 1234;
        int ret = sum1(a);
        System.out.println(ret);
    }

    public static void main1(String[] args) {
        int a = 5;
        int b = 1234;
        //System.out.println("5的阶层是：" + fac(5));
        System.out.println("递归求1-->" + a + "的和为"+sum(a));
        fun(b);
    }
}
